package treinamentoClassificacao.cln.cgt;

import gerenciaDados.cln.cdp.UsuarioLogado;
import gerenciaDados.cln.cgt.PI.DB;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import treinamentoClassificacao.cln.cdp.Auditoria;
import treinamentoClassificacao.cln.cdp.Treinamento;


public class AplTreinarClassificador {
	
	Treinamento treinamento = null;
	UsuarioLogado usuarioLogado = null;

	public boolean treinarClassificador() {
		treinamento = new Treinamento();
		treinamento.insert(usuarioLogado);
		try {
			return treinamento.treinarClassificador();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return false;
		}
	}
	
	public void setUsuarioLogado(UsuarioLogado usuarioLogado) {
		this.usuarioLogado = usuarioLogado; 
	}

	
	public ArrayList<String[]> getDadosTreinamentoAgrupados() {
		return getDadossAgrupados("TRN");
	}

	public ArrayList<String[]> getDadosClassificadosAgrupados() {
		return getDadossAgrupados("CLS");
	}
	
	private ArrayList<String[]> getDadossAgrupados(String finalidade) {
		Connection con = DB.conecta();
		ArrayList<String[]> lstDados = new ArrayList<String[]>();
		
		try {
			Statement stt = con.createStatement();
			ResultSet rs = stt.executeQuery("select tl.descricao tipolampada, p.descricao potencia, COUNT(*) from exemplo e "+
											"inner join tipolampada tl on (e.cd_tipolampada = tl.cd_tipolampada) "+
											"inner join potencia p on (e.cd_potencia = p.cd_potencia) "+
											"where (finalidade = '"+finalidade+"') "+
											"group by tl.descricao, p.descricao "+
											"order by tl.descricao, p.descricao");
			
			while(rs.next()) {
				String[] lstParam = new String[3];
				lstParam[0] = rs.getString("tipolampada").trim();
				lstParam[1] = rs.getString("potencia").trim();
				lstParam[2] = rs.getString("count").trim();
				lstDados.add(lstParam);
			}
			
			stt.close();
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return lstDados;
	}

	public String getDataUltimoTreinamento() {
		return Treinamento.getDataUltimoTreinamento();
	}

	public void auditarClassificador( ) {
		Auditoria a = new Auditoria(getDataUltimoTreinamento());
		a.auditar();		
	}

	public ArrayList<String[]> getTreinamentos() {
		Connection con = DB.conecta();
		ArrayList<String[]> lstTreinamentos = new ArrayList<String[]>();
		
		try {
			Statement stt = con.createStatement();
			ResultSet rs = stt.executeQuery("select data, nomecompleto from logtreinamento lt inner join usuario u on (lt.cd_usuario = u.cd_usuario)");
			
			while(rs.next()) {
				String[] lstParam = new String[2];
				lstParam[0] = rs.getString("data");
				lstParam[1] = rs.getString("nomecompleto");
				lstTreinamentos.add(lstParam);
				//System.out.println(lstParam.toString());
			}
			
			stt.close();
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return lstTreinamentos;
	}
}
